package com.mhg.socket;/*
	服务端

	1.创建服务端
	2.通过循环 为不同的客户端进行服务
	3.循环体内 创建线程
	4.线程的执行体中 进行消息发送 和 接收
		读取客户端发送过来的数据 socket.getInputStream
		回复给客户端的信息 socket.getOutputStream
	5.进行约定 何时停止

*/
import java.io.*;
import java.net.*;
import java.util.*;
class Demo_05_Tcp_Server 
{
	public static void main(String[] args) 
	{
		//1.创建服务器
		ServerSocket ss = null;
		try{
			ss = new ServerSocket(10018);
			//2.通过循环 为不同的客户端进行服务 创建线程
			while(true){
				//获取当前的客户端对象
				Socket socket = ss.accept();
				ServerThread st = new ServerThread(socket);
				st.start();
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}
class ServerThread extends Thread
{
	private Socket socket;
	public ServerThread(Socket socket){
		this.socket = socket;
	}
	public void run(){
		try{
			OutputStream out = socket.getOutputStream();
			InputStream in = socket.getInputStream();
			Scanner sc = new Scanner(System.in);
			while(true){
				//接收客户端发送过来的数据
				byte[] buf = new byte[1024];
				int len = in.read(buf);
				String message = new String(buf,0,len);
				System.out.println("来自客户端的消息:::"+message);

				//回复消息
				System.out.println("回复你::");
				String reback = sc.nextLine();
				out.write(reback.getBytes());
				out.flush();
				//如果客户端 向 服务端 发送886 聊天就结束了
				if(message.equals("886")){
					break;
				}
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}